package com.cskaoyan.javase.oop3._1interface._3extend;
/**
 * 扩展Java8中的默认方法和静态方法
 * 接口在Java8以后,就允许定义带有方法体的实现方法了
 * 包含两种:
 *      1.默认方法,因为它使用关键字default声明
 *          默认方法可以看成抽象类中的成员方法,具有实现
 *          是给接口的实现类使用的,接口自己不能实现,必须创建实现类对象才能用
 *          默认方法允许子类重写
 *
 *      2.静态方法,因为它使用关键字static声明
 *          直接用接口名点调用静态方法
 *          但是尤其要注意,接口中的静态方法,不能用实现类类名点调用
 *          静态方法不能被子类重写
 *
 * 最后强调一点,Java8当中,接口之所以有了实现方法,是做特殊用途的
 * 建议程序员一般不要在接口中定义实现方法
 *
 * @since 10:58
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        IA ia = new IAImpl();
        ia.test();

        IA.testStatic();
        // IAImpl.test
    }
}
class IAImpl implements IA{
    @Override
    public void test() {
        System.out.println("子类重写接口中的默认方法");
    }
}
interface IA{
    default void test() {
        System.out.println("我是默认方法~~");
    }
    static void testStatic(){
        System.out.println("我是静态方法~~");
    }
}